#ifndef CUDA_ADAPTOR_INCLUDE_CUFFTXT_TO_MCFFTXT_ADAPTOR_H_
#define CUDA_ADAPTOR_INCLUDE_CUFFTXT_TO_MCFFTXT_ADAPTOR_H_

// header define
#ifndef _CUFFTXT_H_
#define _CUFFTXT_H_
#endif /* _CUFFTXT_H_ */

// enum redefine
#define CUFFT_XT_FORMAT_INPUT MCFFT_XT_FORMAT_INPUT
#define CUFFT_XT_FORMAT_OUTPUT MCFFT_XT_FORMAT_OUTPUT
#define CUFFT_XT_FORMAT_INPLACE MCFFT_XT_FORMAT_INPLACE
#define CUFFT_XT_FORMAT_INPLACE_SHUFFLED MCFFT_XT_FORMAT_INPLACE_SHUFFLED
#define CUFFT_XT_FORMAT_1D_INPUT_SHUFFLED MCFFT_XT_FORMAT_1D_INPUT_SHUFFLED
#define CUFFT_FORMAT_UNDEFINED MCFFT_FORMAT_UNDEFINED
#define CUFFT_COPY_HOST_TO_DEVICE MCFFT_COPY_HOST_TO_DEVICE
#define CUFFT_COPY_DEVICE_TO_HOST MCFFT_COPY_DEVICE_TO_HOST
#define CUFFT_COPY_DEVICE_TO_DEVICE MCFFT_COPY_DEVICE_TO_DEVICE
#define CUFFT_COPY_UNDEFINED MCFFT_COPY_UNDEFINED
#define CUFFT_QUERY_1D_FACTORS MCFFT_QUERY_1D_FACTORS
#define CUFFT_QUERY_UNDEFINED MCFFT_QUERY_UNDEFINED
#define CUFFT_WORKAREA_MINIMAL MCFFT_WORKAREA_MINIMAL
#define CUFFT_WORKAREA_USER MCFFT_WORKAREA_USER
#define CUFFT_WORKAREA_PERFORMANCE MCFFT_WORKAREA_PERFORMANCE
#define CUFFT_CB_LD_COMPLEX MCFFT_CB_LD_COMPLEX
#define CUFFT_CB_LD_COMPLEX_DOUBLE MCFFT_CB_LD_COMPLEX_DOUBLE
#define CUFFT_CB_LD_REAL MCFFT_CB_LD_REAL
#define CUFFT_CB_LD_REAL_DOUBLE MCFFT_CB_LD_REAL_DOUBLE
#define CUFFT_CB_ST_COMPLEX MCFFT_CB_ST_COMPLEX
#define CUFFT_CB_ST_COMPLEX_DOUBLE MCFFT_CB_ST_COMPLEX_DOUBLE
#define CUFFT_CB_ST_REAL MCFFT_CB_ST_REAL
#define CUFFT_CB_ST_REAL_DOUBLE MCFFT_CB_ST_REAL_DOUBLE
#define CUFFT_CB_UNDEFINED MCFFT_CB_UNDEFINED

// class redefine
#define cufftXtSubFormat_t mcfftXtSubFormat_t
#define cufftXtSubFormat mcfftXtSubFormat
#define cufftXtCopyType_t mcfftXtCopyType_t
#define cufftXtCopyType mcfftXtCopyType
#define cufftXtQueryType_t mcfftXtQueryType_t
#define cufftXtQueryType mcfftXtQueryType
#define cufftXt1dFactors_t mcfftXt1dFactors_t
#define cufftXt1dFactors mcfftXt1dFactors
#define cufftXtWorkAreaPolicy_t mcfftXtWorkAreaPolicy_t
#define cufftXtWorkAreaPolicy mcfftXtWorkAreaPolicy
#define cufftResult mcfftResult
#define cufftHandle mcfftHandle
#define cufftXtCallbackType_t mcfftXtCallbackType_t
#define cufftXtCallbackType mcfftXtCallbackType
#define cufftComplex mcfftComplex
#define cufftCallbackLoadC mcfftCallbackLoadC
#define cufftDoubleComplex mcfftDoubleComplex
#define cufftCallbackLoadZ mcfftCallbackLoadZ
#define cufftReal mcfftReal
#define cufftCallbackLoadR mcfftCallbackLoadR
#define cufftCallbackLoadD mcfftCallbackLoadD
#define cufftCallbackStoreC mcfftCallbackStoreC
#define cufftCallbackStoreZ mcfftCallbackStoreZ
#define cufftCallbackStoreR mcfftCallbackStoreR
#define cufftCallbackStoreD mcfftCallbackStoreD
#define cufftDoubleReal mcfftDoubleReal

// func redefine
#define cufftXtSetGPUs mcfftXtSetGPUs
#define cufftXtMalloc mcfftXtMalloc
#define cufftXtMemcpy mcfftXtMemcpy
#define cufftXtFree mcfftXtFree
#define cufftXtSetWorkArea mcfftXtSetWorkArea
#define cufftXtExecDescriptorC2C mcfftXtExecDescriptorC2C
#define cufftXtExecDescriptorR2C mcfftXtExecDescriptorR2C
#define cufftXtExecDescriptorC2R mcfftXtExecDescriptorC2R
#define cufftXtExecDescriptorZ2Z mcfftXtExecDescriptorZ2Z
#define cufftXtExecDescriptorD2Z mcfftXtExecDescriptorD2Z
#define cufftXtExecDescriptorZ2D mcfftXtExecDescriptorZ2D
#define cufftXtQueryPlan mcfftXtQueryPlan
#define cufftDoubleReal mcfftDoubleReal
#define cufftXtSetCallback mcfftXtSetCallback
#define cufftXtClearCallback mcfftXtClearCallback
#define cufftXtSetCallbackSharedSize mcfftXtSetCallbackSharedSize
#define cufftXtMakePlanMany mcfftXtMakePlanMany
#define cufftXtGetSizeMany mcfftXtGetSizeMany
#define cufftXtExec mcfftXtExec
#define cufftXtExecDescriptor mcfftXtExecDescriptor
#define cufftXtSetWorkAreaPolicy mcfftXtSetWorkAreaPolicy

#endif // CUDA_ADAPTOR_INCLUDE_CUFFTXT_TO_MCFFTXT_ADAPTOR_H_
